OLD GIT - https://git.gosuslugi.local/ervu/source/mz-xsd-storage/-/tree/master/mnsv-ervu-abroad-forbidden-temporary

GIT (вынесено в отдельный репозиторий в рамках Невозможно найти сервер Jira для этого макроса. Причиной может быть конфигурация ссылки на приложение. ) - https://git.gosuslugi.local/ervu/source/mz-mnsv-ervu-abroad-forbidden-temporary

Описание

Сервис для работы с ВС "ЕРВУ_Передача сведений о запрете на выезд граждан из РФ" для ФОИВ ФСБ (urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary/1.0.5). Принимает JSON из процессов, преобразует в XML и направляет в кафку для передачи в сервис mz-adapter и последующей отправки в ФОИВ через СМЭВ.

Сервис вынесен в отдельный репозиторий с использованием библиотеки mzServiceCore

Назначение

Сервис реализует передачу данных о введении или отмене временной меры "Запрет на выезд из Российской Федерации". JSON передаётся из процессов, преобразуется в XML сообщение по формату ВС https://lkuv.gosuslugi.ru/paip-portal/#/inquiries/card/b5fd2c89-7113-4883-9d59-1b9fa31df90b

На текущий момент работает с версией ВС 1.0.5

Вид сведений не подразумевает передачу вложений (решение о введении/отмене меры) !!!


Схема взаимодействия ФОИВ ФСБ по части введения и отмены временных мер

mz-mnsv-ervu-abroad-forbidden-temporary 
ЕРВУ
Подтверждение отправки запроса
(SendRequestResponse)
СМЭВ3
Отправка сообщения ответа
(GetRequestResponse)
Проверка наличия сведений
(GetRequestRequest)
Подтверждение получения сообщения-ответа
(AckRequest)
Ответ о получении подтверждения
(AckResponse)
Отправка сообщения ответа
(GetRequestResponse)
Проверка наличия сведений
(GetRequestRequest)
Подтверждение получения сообщения-ответа
(AckRequest)
Ответ о получении подтверждения
(AckResponse)
Подтверждение отправки ответа
(SendResponseResponse)
Отправка ответа
(SendResponseRequest)
Проверка на наличие сведений
(GetResponseRequest)
МРЦОД
Передача сведений о введении мер
(urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary/1.0.5)
measuresTemporary.status: true
(SendRequestRequest)
Проверка на наличие сведений
(GetRequestRequest)
Передача сведений
(GetRequestResponse)
Подтверждение получения сообщения из очереди СМЭВ
(AckRequest)
Ответ о получении подтверждения
(AckResponse)
Передача сообщения - подтверждения введения временных мер по 
ВС urn://rostelekom.ru/ERVU-MeasuresTemporaryConfirmFSB/1.0.1
(SendRequestRequest) 
Подтверждение отправки запроса
(SendRequestResponse)
Подтверждение отправки ответа
(SendResponseResponse)
Отправка ответа
(SendResponseRequest)
Передача сведений об отмене мер
(urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary/1.0.5)
measuresTemporary.status: false
(SendRequestRequest)
Подтверждение отправки запроса
(SendRequestResponse)
Проверка на наличие сведений
(GetResponseRequest)
Передача сведений
(GetResponseResponse)
Подтверждение получения сообщения из очереди СМЭВ
(AckRequest)
Ответ о получении подтверждения
(AckResponse)
Проверка на наличие сведений
(GetRequestRequest)
Передача сведений
(GetRequestResponse)
Подтверждение получения сообщения из очереди СМЭВ
(AckRequest)
Ответ о получении подтверждения
(AckResponse)
Ответ о получении подтверждения
(AckResponse)
Передача сведений
(GetResponseResponse)
ФЦОД ПС
Подтверждение применения меры
Предоставление списка лиц
Запрос списка лиц, для которых
установлено временное ограничение
Подтверждение отправки
Подтверждение отмены меры
Предоставление списка лиц
Запрос списка лиц, для которых
отменено временное ограничение
Подтверждение отправки
Передача сообщения - подтверждения отмены временных мер по 
ВС urn://rostelekom.ru/ERVU-MeasuresTemporaryConfirmFSB/1.0.1
(SendRequestRequest) 
Подтверждение отправки запроса
(SendRequestResponse)
Подтверждение получения сообщения из очереди СМЭВ
(AckRequest)


Примеры запроса

Инициатором сеанса выступает система ЕРВУ, передавая сообщение о введении или отмене временной меры через вид сведений urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary (текущая версия 1.0.5). Сеанс работает в формате рассылка (Тип обмена - Целиковая маршрутизация рассылка), что подразумевает отсутствие ответа от получателя рассылки (ФОИВ ФСБ). Проверить состояние сообщения можно только через функционал "Судьба сообщения СМЭВ3". Подтверждение от ФОИВ приходит по отдельному виду сведений, работающему по формату "запрос - ответ" (см. Описание сервиса подтверждения меры "Запрет на выезд")

Структура запроса

Поле в xmlНазначение поляФЛККол-во возможных вхожденийКомментарий
Начало блока common - основная информация о гражданине
lastNameФамилияКириллица, пробел, дефис. Максимум - 100 символов1..1
firstNameИмяКириллица, пробел, дефис. Максимум - 100 символов1..1
middleNameОтчествоКириллица, пробел, дефис. Максимум - 100 символов0..1
genderПолСправочник0..1
  • 1 (Мужской)
  • 2 (Женский)
Начало блока birthDate - сведения о дате рождения гражданина
dayДень рожденияЧисло от 01 до 311..1
monthМесяц рожденияЧисло от 01 до 121..1
yearГод рожденияЧисло от 1900 до 20991..1
Конец блока birthDate - сведения о дате рождения гражданина
birthPlaceМесто рожденияКириллица, дефис, цифры, пробел, точка, запятая. Максимум - 250 символов1..1
snilsСНИЛС11 цифр0..1
idERNНомер записи в едином регистре населения12 цифр0..1
Конец блока common - основная информация о гражданине
Начало блока passport - сведения о паспорте гражданина
seriesСерия
1..1
numberНомер
1..1
issueDateДата выдачи
1..1
Конец блока passport - сведения о паспорте гражданина
Начало блока measuresTemporary - информация о временных мерах
measureIdУникальный идентификаторЛатиница, дефис, цифры. Максимум - 85 символов1..1
statusСтатус мерыboolean1..1
  • true
  • false
numberНомер решения о введении мерыЦифры, дефис. Максимум - 250 символов1..1
dateДата решения о введении мерыДата в формате dd.mm.yyyy1..1
militaryCommissariatNameНаименование организации, принявшей решение о введении мерыКириллица, цифры, пробел, спецсимволы. Максимум - 512 символов0..1
measureCodeКод временной мерыСправочник1..1
  • 1 (Запрет на выезд из Российской Федерации)
measureNameТип временной мерыКириллица, пробел. Максимум - 100 символов1..1
militaryComissarФамилия военного комиссараКириллица, пробел, дефис. Максимум - 100 символов1..1
militaryComissarFirstNameИмя военного комиссараКириллица, пробел, дефис. Максимум - 100 символов1..1
militaryComissarMiddleNameОтчество военного комиссараКириллица, пробел, дефис. Максимум - 100 символов0..1
Конец блока measuresTemporary - информация о временных мерах
senderПередача кода маршрутизации1-7 символов1..1

Пример сообщения рассылки в формате XML

request_example Развернуть исходный код


Атрибут sender

В данном атрибуте передаётся код маршрутизации с мнемоникой стенда, с которого отправлено сообщение. Это необходимо для передачи в сообщение о подтверждении введения/отмены меры (для отправки сообщения на корректный стенд). Значение атрибута передаётся не из процессов, а закладывается в переменной окружения SENDER_CODE, установленной в сервисе 

Пример на стенде TEST


Kafka

Consumer

  • mz.in.request
  • mz.out.response
  • smev.status.handler

Producer


S3

Сервис имеет доступ к корзине mz-attachment с правами READ, WRITE

БД mz_ervu_restriction_info

В данной БД хранится информация о мерах, действующих и отменённых, по каждому из видов сведений (каждому ФОИВ)

Столбец
Дата тайп
NOT NULL
PK
Комментарий
Пример заполнения
idUUID++Идентификатор записи7492ff5e-9f0e-4d02-8e6d-a02b9e41a024
request_idUUID+
Идентификатор запроса36aaa4f6-0995-43da-8162-1c87e6f9952b
classvarchar(500)

Класс вида сведенийMeasuresTemporaryData@urn://rostelekom.ru/ERVU-AbroadForbiddenTemporary/1.0.5
restriction_idUUID+
Идентификатор временной меры6ef19960-8bca-408d-a420-35b972871570
restriction_statusboolean

Статус временной мерыtrue
request_stamptimestamp+
Дата и время отправки запроса2024-07-12 21:52:26.562
received_smev_statusvarchar(200)

Полученный статус от СМЭВ

Владельцем БД номинально числится сервис mz-mnsv-ervu-driving-registration-vehicle, но у всех сервисов, отвечающих за временные меры, есть права на запись в данную таблицу

Проверка XML на валидность

В сервисе реализована проверка XML согласно XSD-схеме вида сведений. Флаг, отвечающий за функционал, лежит в конфиге сервиса по пути extra_options.validator.xml.enabled с значением true

validator config Развернуть исходный код


В такой реализации некорректный JSON, поступающий из процессов и преобразованный в XML, проверяется внутри сервиса на валидность по схеме вида сведений. Схема расположена по пути /src/main/resources в папке с версией ВС

На текущий момент путь до XSD-схемы /src/main/resources/1_0_5/schema/schema.xsd

Если JSON некорректен, в логах сервиса будет ошибка

Пример ошибки из логов

validation error log Развернуть исходный код

В данном случае 

Value 'Фамилия476592111354' - значение из процесса

pattern '[-А-Яа-яёЁ ]{1,100}' - паттерн RegExp, установленный для поля

type 'string-100' - тип данных для элемента, установленный в XSD схеме


Самая частая ошибка на тестовых стендах - в ФИО гражданина есть цифры (т.к. большинство записей заводится в таком формате: 'Фамилия476592111354 Имя476592111354 Отчество476592111354'), которые не предусмотрены в XSD


Дублирование сообщения

По существующей бизнес-логике, при отправке сообщения о введении/отмене меры в ФСБ, также уведомление отправляется в МВД (сервис mz-mnsv-ervu-driving-registration-vehicle) по виду сведений urn://rostelekom.ru/ERVU-DrivingRegistrationVehicleForbiddenTemporary/1.0.3

Так как описанный выше вид сведений не подразумевает вложений, то при отправке в ФСБ вложений нет. Однако вид сведений МВД вложения подразумевает, и при уведомлении МВД о введении меры "Запрет на выезд" туда отправляется вложение, которого нет в "исходном" сообщении

Написать комментарий...